/*
 * Lista_enlazada_simple.c
 * 
 * Copyright 2014 gabo <gabo@tux>
 * 
 * Fecha: 04.02.2014
 * Hora:  00:54:34
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License.
 * 
 * 
 */

#include <stdio.h>
#include <stdlib.h>

typedef struct NODO{
	int dato;
	struct NODO * siguiente;
	
	} _nodo;
	
_nodo * primer;
_nodo * ultimo;

void agregar();
void mostrar();


int main( void )
{
	system( "clear" );
	int op;
	
	do{
		puts( "\t\t\t\tLista Enlazada Simple");
		printf( "\n1. Agregar" );
		printf( "\n2. Mostrar" );
		printf( "\n3. Salir" );
		printf( "\n\nOpcion: " );
		scanf( "%d", &op );
		
		switch( op )
		{
				
			case 1:
				agregar();
				break;
				
			case 2:
				mostrar();
				break;
				
			case 3:
				puts( "Saliendo..." );
				exit( 0 );
				break;
				
			default:
				puts( "Opcion invalida" );
			}
		
		}while( op != 3 );
	return 0;
	}
	

	
void agregar()
{
	system( "clear" );
	_nodo * nuevo;
	
	nuevo = (_nodo *)malloc(sizeof(_nodo));
	
	if( nuevo == NULL )
		puts( "No hay memoria" );
		
	else
		{
			printf( "Dato: " );
			scanf( "%d", &nuevo -> dato );
			
			nuevo -> siguiente = NULL;
			
			if( primer == NULL )
				{
					primer = nuevo;
					ultimo = nuevo;
					}
					
			else
				{
					ultimo -> siguiente = nuevo;
					ultimo = nuevo;
					}
			}
	
	}
	
	
void mostrar()
{
	system( "clear" );
	_nodo * aux;
	
	int i = 0;
	
	aux = primer;
	while( aux != NULL )
		{
			printf( "%d ", aux -> dato );
			aux = aux -> siguiente;
			i++;
			}
	if( i == 0 )
		puts( "Lista vacia" );
	}
